package jwj8508;

public class J09_While {

	// 반목문 loop
	// 가끔 어떤 동작을 여러 번 수행해야 할 때가 있음
	// 코드를 복사해서 반복을 해도 해결되지 않는 문제발생
	// 반복횟수가 5번이면 코드 줄의 수도 5줄 작성
	// 코드내 내용이 수정되면 그 사본도 수정해야 함

	// 이것에 대한 현명한 방법은 반복문 안에 코드를 넣는 것
	// 반복할 코드를 한 줄만 작성하고 컴파일러에게 이 코드를 몇번이고
	// 반복 실행하라고 지시할 수 있음

	// 반복문의 종류
	// while, do-while, for

	// while
	// while(조건식){
	// 문장;
	// }
	// 조건식의 결과가 참이면 블록 안의 문장 실행하고 다시 조건식 검사
	// 따라서 반복 실행을 중단하려면 조건식의 결과가 거짓이 되도록 만들거나
	// break문을 사용

	// 반복문의 처리 과정을 단계별로 파악하려면 통합개발환경의 디버깅 기능을 이용

	// break, continue
	// break문은 while, do-while, for문의 반복실행을
	// 중단하기 위해 사용
	// break문을 아무 곳이나 사용하면 컴파일 오류 발생
	// continue문은 while, do-while, for문의
	// 현재 반복을 중단하고 다음 반복의 시작으로 제어를 넘김

	public static void main(String[] args) {
		// 반복 처리문을 사용하지 않았을 때
		System.out.println("선생님 사랑해요."); // 한번

		System.out.println("선생님 사랑해요."); // 세번
		System.out.println("선생님 사랑해요.");
		System.out.println("선생님 사랑해요.");

		System.out.println("선생님 사랑해요."); // 다섯번
		System.out.println("선생님 사랑해요.");
		System.out.println("선생님 사랑해요.");
		System.out.println("선생님 사랑해요.");
		System.out.println("선생님 사랑해요.");

		// 문제 1 : 반복문을 사용하지 않고 '시간은 금이라구, 친구!!'라는 문장을 5번 반복 출력
		System.out.println("시간은 금이라구, 친구!!");
		System.out.println("시간은 금이라구, 친구!!");
		System.out.println("시간은 금이라구, 친구!!");
		System.out.println("시간은 금이라구, 친구!!");
		System.out.println("시간은 금이라구, 친구!!");

		// 반복문을 이용하면 다음과 같다
		int count = 0;
		while (count < 5) {
			System.out.println("시간은 금이라구, 친구!!");
			count = count + 1;
		}

		// 문제 2 : 반복문을 사용하지 않고 1부터 10까지 출력
		System.out.println(1);
		System.out.println(2);
		System.out.println(3);
		System.out.println(4);
		System.out.println(5);
		System.out.println(6);
		System.out.println(7);
		System.out.println(8);
		System.out.println(9);
		System.out.println(10);

		// 반복문을 이용하면 다음과 같다
		count = 1;
		while (count <= 10) {
			System.out.println(count);
			++count; // count = count + 1;
		}

		// 문제 3 : 반복문을 이용해서 19단의 19단 출력
		// 19 X 1 = 19
		// 19 X 2 = 38
		// ... ...
		// 19 X 19 = 361
		count = 1;
		int result = 0;
		while (count <= 19) {
			result = 19 * count;
			System.out.println("19 X " + count + " = " + result);
			++count;
		}

		// 문제 4 : 반복문과 break를 이용해서 1~10까지 출력하는 프로그램
		count = 1;
		while (count <= 10) {
			System.out.println(count);
			++count;
		} // break를 사용하지 않음

		count = 1;
		while (true) {
			if (count > 10)
				break;
			System.out.println(count);
			++count;
		} // break 사용

		// 문제 5 : 반목문과 continue를 이용해서
		// 1~10까지 출력하는 프로그램. 단, 5는 출력하지 않음
		count = 1;
		while (count <= 10) {
			if (count != 5)
				System.out.println(count);
			++count;
		} // continue를 사용하지 않았을 때

		count = 1;
		while (count <= 10) {
			if (count == 5) {
				++count;
				continue;
			}
			System.out.println(count);
			++count;
		} // continue 사용

		// 문제 6 : 1~100사이에 짝수만 출력하는 프로그램
		count = 1;
		while (count <= 100) {
			if (count % 2 == 0)
				System.out.println(count);
			++count;
		}

		// 문제 7 : 1~100사이에 홀수만 출력하는 프로그램
		count = 1;
		while (count <= 100) {
			if (count % 2 == 1)
				System.out.println(count);
			++count;
		}

	}
}
